'use strict';

const Controller = require('../../core/common');

class WebController extends Controller {

  async current() {
    const { ctx, app } = this;

    console.log(ctx.state.user, 123)

    if (ctx.state.user) {
      const token = app.jwt.sign({ id: ctx.state.user.id }, app.config.jwt.secret, { expiresIn: '7d' });
      ctx.set('Authorization', `Bearer ${token}`);
    }

    // await this.ctx.helper.sleep(1500);

    this.success({
      id: 1,
      name: '程序猿',
      avatar: '/public/avatar.jpg',
      // userid: '00000001',
      // email: 'antdesign@alipay.com',
      // signature: '海纳百川，有容乃大',
      // title: '交互专家',
      // group: '蚂蚁金服－某某某事业群－某某平台部－某某技术部－UED',
      // tags: [{
      //   key: '0',
      //   label: '很有想法的',
      // }, {
      //   key: '1',
      //   label: '专注设计',
      // }, {
      //   key: '2',
      //   label: '辣~',
      // }, {
      //   key: '3',
      //   label: '大长腿',
      // }, {
      //   key: '4',
      //   label: '川妹子',
      // }, {
      //   key: '5',
      //   label: '海纳百川',
      // }, ],
      // notifyCount: 12,
      // unreadCount: 11,
      // country: 'China',
      // geographic: {
      //   province: {
      //     label: '浙江省',
      //     key: '330000',
      //   },
      //   city: {
      //     label: '杭州市',
      //     key: '330100',
      //   },
      // },
      // address: '西湖区工专路 77 号',
      // phone: '0752-268888888',
    });
  }

  async signout() {
    const { ctx } = this;

    const data = ctx.service.v1.addresses.findAll();

  }

  async signin() {
    const { ctx, app } = this;

    const { userName = '', password = '', type = '' } = ctx.request.body;

    const results = await ctx.model.Managers.findOne({ attributes: ['id', 'password'], where: { name: userName } }) || {};
    if (!results.id) return this.success({ type, currentAuthority: 'guest' }, '用户名错误', -1);
    // https://www.npmjs.com/package/egg-bcrypt
    // const hash = await this.ctx.genHash(password);
    const checked = await ctx.compare(password, results.password || '');

    if (checked) {
      try {
        const token = app.jwt.sign({ id: results.id }, app.config.jwt.secret, { expiresIn: '7d' });
        await app.redis.get('users').set('managersId_' + results.id, token);
        ctx.set('Authorization', `Bearer ${token}`);
        this.success({ type, currentAuthority: 'admin' });
      } catch (e) {
        ctx.throw(500, '生成 Token失败！' + e);
      }
    } else {
      this.success({ type, currentAuthority: 'guest' }, '用户密码错误', -1);
    }
  }

  async signon() {
    const { ctx } = this;

    const { userName, password } = ctx.request.body;

    const hash = await ctx.genHash(password);

    this.success(hash)
  }

  async password() {
    const { ctx } = this;

    const data = await ctx.service.v1.addresses.findAll();

    this.success(data);

  }

  async captcha() {
    const { ctx } = this;

    this.success();
  }

  async notices() {
    const { ctx } = this;

    this.success([{
      id: '000000001',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
      title: '你收到了 14 份新周报',
      datetime: '2017-08-09',
      type: 'notification',
    }, {
      id: '000000002',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
      title: '你推荐的 曲妮妮 已通过第三轮面试',
      datetime: '2017-08-08',
      type: 'notification',
    }, {
      id: '000000003',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
      title: '这种模板可以区分多种通知类型',
      datetime: '2017-08-07',
      read: true,
      type: 'notification',
    }, {
      id: '000000004',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
      title: '左侧图标用于区分不同的类型',
      datetime: '2017-08-07',
      type: 'notification',
    }, {
      id: '000000005',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
      title: '内容不要超过两行字，超出时自动截断',
      datetime: '2017-08-07',
      type: 'notification',
    }, {
      id: '000000006',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
      title: '曲丽丽 评论了你',
      description: '描述信息描述信息描述信息',
      datetime: '2017-08-07',
      type: 'message',
      clickClose: true,
    }, {
      id: '000000007',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
      title: '朱偏右 回复了你',
      description: '这种模板用于提醒谁与你发生了互动，左侧放『谁』的头像',
      datetime: '2017-08-07',
      type: 'message',
      clickClose: true,
    }, {
      id: '000000008',
      avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
      title: '标题',
      description: '这种模板用于提醒谁与你发生了互动，左侧放『谁』的头像',
      datetime: '2017-08-07',
      type: 'message',
      clickClose: true,
    }, {
      id: '000000009',
      title: '任务名称',
      description: '任务需要在 2017-01-12 20:00 前启动',
      extra: '未开始',
      status: 'todo',
      type: 'event',
    }, {
      id: '000000010',
      title: '第三方紧急代码变更',
      description: '冠霖提交于 2017-01-06，需在 2017-01-07 前完成代码变更任务',
      extra: '马上到期',
      status: 'urgent',
      type: 'event',
    }, {
      id: '000000011',
      title: '信息安全考试',
      description: '指派竹尔于 2017-01-09 前完成更新并发布',
      extra: '已耗时 8 天',
      status: 'doing',
      type: 'event',
    }, {
      id: '000000012',
      title: 'ABCD 版本发布',
      description: '冠霖提交于 2017-01-06，需在 2017-01-07 前完成代码变更任务',
      extra: '进行中',
      status: 'processing',
      type: 'event',
    }, ]);
  }

}

module.exports = WebController;